package pe.gob.onpe.ejb;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import pe.gob.onpe.ejb.id.OficinaDespachoId;


/**
 * OficinaDespacho entity.
 * 
 * @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "OFICINA_DESPACHO", schema = "SVENP", uniqueConstraints = {})
public class OficinaDespacho implements java.io.Serializable {

	// Fields
	private static final long serialVersionUID = -6722511528770954655L;
	private OficinaDespachoId id;
	private InstitucionSolicitante institucionSolicitante;
	private String nombre;
	private String direccion;
	private String telefono;
	private Set<RegistroLinea> registroLineas = new HashSet<RegistroLinea>(0);

	// Constructors

	/** default constructor */
	public OficinaDespacho() {
	}

	/** minimal constructor */
	public OficinaDespacho(OficinaDespachoId id,
			InstitucionSolicitante institucionSolicitante, String nombre) {
		this.id = id;
		this.institucionSolicitante = institucionSolicitante;
		this.nombre = nombre;
	}

	/** full constructor */
	public OficinaDespacho(OficinaDespachoId id,
			InstitucionSolicitante institucionSolicitante, String nombre,
			String direccion, String telefono, Set<RegistroLinea> registroLineas) {
		this.id = id;
		this.institucionSolicitante = institucionSolicitante;
		this.nombre = nombre;
		this.direccion = direccion;
		this.telefono = telefono;
		this.registroLineas = registroLineas;
	}

	// Property accessors
	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "institucionSolicitanteId", column = @Column(name = "INSTITUCION_SOLICITANTE_ID", unique = false, nullable = false, insertable = true, updatable = true, precision = 10, scale = 0)),
			@AttributeOverride(name = "oficinadespachoId", column = @Column(name = "OFICINADESPACHO_ID", unique = false, nullable = false, insertable = true, updatable = true, precision = 10, scale = 0)) })
	public OficinaDespachoId getId() {
		return this.id;
	}

	public void setId(OficinaDespachoId id) {
		this.id = id;
	}

	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "INSTITUCION_SOLICITANTE_ID", unique = false, nullable = false, insertable = false, updatable = false)
	public InstitucionSolicitante getInstitucionSolicitante() {
		return this.institucionSolicitante;
	}

	public void setInstitucionSolicitante(
			InstitucionSolicitante institucionSolicitante) {
		this.institucionSolicitante = institucionSolicitante;
	}

	@Column(name = "NOMBRE", unique = false, nullable = false, insertable = true, updatable = true)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@Column(name = "DIRECCION", unique = false, nullable = true, insertable = true, updatable = true)
	public String getDireccion() {
		return this.direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	@Column(name = "TELEFONO", unique = false, nullable = true, insertable = true, updatable = true)
	public String getTelefono() {
		return this.telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "oficinaDespacho")
	public Set<RegistroLinea> getRegistroLineas() {
		return this.registroLineas;
	}

	public void setRegistroLineas(Set<RegistroLinea> registroLineas) {
		this.registroLineas = registroLineas;
	}

}